﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FAS.App_Code;
using FAS.Objetos;

namespace FasGUI
{
    public partial class FormFiltroCatalogo : Form
    {
        private Form inicio;
        public int materia;
        private List<String> IdViejos = new List<String>();
        public FormFiltroCatalogo(Form inicio , int materia)
        {
            this.inicio = inicio;
            this.materia = materia;
            InitializeComponent();
            fillAll();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            fillAll();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            new NuevoObjetivo(this).Show();
        }

        private DataGridViewTextBoxCell getCell(String value)
        {
            DataGridViewTextBoxCell celda = new DataGridViewTextBoxCell();
            celda.Value = value;
            return celda;
        }

        public void fillAll()
        {
            this.IdViejos.Clear();
            ConexionMySQL conexion = new ConexionMySQL();
            DataSet data = conexion.GetQuery("SELECT * FROM `Objetivo` where IdMateria = '" + materia+ "'");
            this.dataGridView1.Rows.Clear();
            foreach (DataRow rowD in data.Tables[0].Rows)
            {
                string IdObjetivoStr = rowD["IdObjetivo"].ToString();
                string NombreStr = rowD["Nombre"].ToString();
                this.IdViejos.Add(IdObjetivoStr);
                DataGridViewRow row = new DataGridViewRow();
                row.Cells.Add(getCell(IdObjetivoStr));
                row.Cells.Add(getCell(NombreStr));
                DataGridViewLinkCell l = new DataGridViewLinkCell();
                l.Value = "Ver";
                row.Cells.Add(l);
                DataGridButtonCellPayo button = new DataGridButtonCellPayo(IdObjetivoStr,materia);
                button.Value = "Eliminar";
                row.Cells.Add(button);
                this.dataGridView1.Rows.Add(row);
            }
            this.dataGridView1.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader;
            this.dataGridView1.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if(this.Validate()){
                for(int r=0;r<IdViejos.Count;r++)
                {
                    String IdObjetivo = this.dataGridView1.Rows[r].Cells[0].Value.ToString();
                    DataSet data = new ConexionMySQL().GetQuery("SELECT * FROM `Objetivo` where IdMateria = '" + materia + "' AND IdObjetivo = '"+IdObjetivo+"'");
                    Objetivo obj = new Objetivo();
                    obj.IdMateria = materia;
                    obj.IdObjetivo = IdObjetivo;
                    obj.Nombre = (this.dataGridView1.Rows[r].Cells[1].Value.ToString());
                    obj.update();
                }
                fillAll();
                MessageBox.Show("Se Han Actualizado los Datos");
            }
            else MessageBox.Show("Error: Hay Objetivos Vacios");
            
        }

        private new bool Validate()
        {
            for (int r = 0; r < IdViejos.Count; r++)
            {
                object s = (this.dataGridView1.Rows[r].Cells[1].Value);
                if (s == null)
                    return false;
            }
            return true;
        }

        private void clickdgv(object sender, DataGridViewCellEventArgs e)
        {
            int row = dataGridView1.SelectedCells[0].RowIndex;    
            if(e.ColumnIndex == 2){
                this.Hide();
                new FormFiltroProblemas(this,this.dataGridView1.Rows[row].Cells[0].Value.ToString(),materia).Show();
            }
            else if(e.ColumnIndex == 3)
            {
                if (MessageBox.Show("Esta Seguro de Borrar el Objetivo?", "Confirmar", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Objetivo objetivo= FAS.Objetos.Objetivo.GetObjetivo((this.dataGridView1.Rows[row].Cells[0].Value.ToString()),materia);
                    objetivo.delete();
                    this.fillAll();
                    MessageBox.Show("Se Ha Eliminado el Objetivo");
                }
            }
        }

        private void FormFiltroCatalogo_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.Dispose();
            inicio.Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Dispose();
            inicio.Show();
        }
    }
}